/**
 * Pour le projet : amour-me-zam-android
 * @author deungoueyann
 * @description cette classe permet
 * fait le : 22 nov. 2012
 */
package cm.dpassyann.speedDating.ui.activity.connection.task;

import roboguice.inject.ContextSingleton;
import roboguice.util.Ln;
import android.os.AsyncTask;
import cm.dpassyann.speedDating.exception.SpeedDatingException;
import cm.dpassyann.speedDating.model.bean.user.User;
import cm.dpassyann.speedDating.ui.activity.connection.IConnectionActivity;
import cm.dpassyann.speedDating.ui.event.OnSpeedDatingExceptionEvent;

import com.google.inject.Inject;

/**
 * Pour le projet : amour-me-zam-android
 * @author deungoueyann
 * @description cette classe permet de lancer l'appel réseau pour connecter un client
 * @date fait le : 22 nov. 2012
 */
@ContextSingleton
public class ConnectionTask extends	AsyncTask<String, Void, User> {

	private IConnectionActivity activity;

	@Inject
	public ConnectionTask(IConnectionActivity activity){
		this.activity = activity;
	}

	@Override
	protected void onCancelled() {
		Ln.d("Je suis là");
	}


	@Override
	protected void onPreExecute() {
		activity.showProgress();
	}

	@Override
	protected User doInBackground(String... params) {
		String login = params[0];
		String password = params[1];
		if (!isCancelled()){
			try {
				User user = activity.getUserDao().connect(login, password);
				return user;
			} catch (SpeedDatingException e) {
				Ln.d(e);
			} 
		}
		return null;
	}

	@Override
	protected void onPostExecute(User user) {
		super.onPostExecute(user);
		if(user != null){
			activity.cancelProgress();
			activity.isConnected(user);
			cancel(true);
		}
		else{
			cancel(true);
			activity.getEventManager().fire(new OnSpeedDatingExceptionEvent("Problème lors de la connexion"));
		}
	}

}
